// 用户认证服务

// 存储用户信息的键名
const USERS_STORAGE_KEY = 'legal_assistant_users';
const CURRENT_USER_KEY = 'current_user';

// 获取所有用户
const getUsers = () => {
  try {
    const usersJson = localStorage.getItem(USERS_STORAGE_KEY);
    return usersJson ? JSON.parse(usersJson) : {};
  } catch (error) {
    console.error('获取用户数据失败:', error);
    return {};
  }
};

// 保存用户数据
const saveUsers = (users) => {
  try {
    localStorage.setItem(USERS_STORAGE_KEY, JSON.stringify(users));
    return true;
  } catch (error) {
    console.error('保存用户数据失败:', error);
    return false;
  }
};

// 注册新用户
export const register = (username, password) => {
  const users = getUsers();
  
  // 检查用户名是否已存在
  if (users[username]) {
    return {
      success: false,
      message: '用户名已被使用'
    };
  }
  
  // 创建用户对象，包含密码和初始化的数据存储
  users[username] = {
    password,
    createdAt: new Date().toISOString(),
    data: {
      // 初始化用户数据存储
      qaMessages: [],
      testMessages: [],
      caseMessages: [],
      config: null
    }
  };
  
  // 保存用户数据
  if (saveUsers(users)) {
    // 设置当前用户
    setCurrentUser(username);
    
    return {
      success: true,
      message: '注册成功'
    };
  } else {
    return {
      success: false,
      message: '注册失败，无法保存用户数据'
    };
  }
};

// 用户登录
export const login = (username, password) => {
  const users = getUsers();
  
  // 检查用户是否存在
  if (!users[username]) {
    return {
      success: false,
      message: '用户不存在'
    };
  }
  
  // 验证密码
  if (users[username].password !== password) {
    return {
      success: false,
      message: '密码错误'
    };
  }
  
  // 设置当前用户
  setCurrentUser(username);
  
  return {
    success: true,
    message: '登录成功'
  };
};

// 用户登出
export const logout = () => {
  localStorage.removeItem(CURRENT_USER_KEY);
  return {
    success: true,
    message: '已退出登录'
  };
};

// 获取当前登录用户
export const getCurrentUser = () => {
  try {
    return localStorage.getItem(CURRENT_USER_KEY);
  } catch (error) {
    console.error('获取当前用户失败:', error);
    return null;
  }
};

// 设置当前登录用户
const setCurrentUser = (username) => {
  try {
    localStorage.setItem(CURRENT_USER_KEY, username);
    return true;
  } catch (error) {
    console.error('设置当前用户失败:', error);
    return false;
  }
};

// 检查用户是否已登录
export const isLoggedIn = () => {
  return !!getCurrentUser();
};

// 保存用户数据
export const saveUserData = (dataType, data) => {
  const username = getCurrentUser();
  if (!username) return false;
  
  const users = getUsers();
  if (!users[username]) return false;
  
  // 更新用户特定类型的数据
  users[username].data[dataType] = data;
  
  return saveUsers(users);
};

// 获取用户数据
export const getUserData = (dataType) => {
  const username = getCurrentUser();
  if (!username) return null;
  
  const users = getUsers();
  if (!users[username] || !users[username].data) return null;
  
  return users[username].data[dataType] || null;
};

// 获取用户资料
export const getUserProfile = () => {
  const username = getCurrentUser();
  if (!username) return null;
  
  const users = getUsers();
  if (!users[username]) return null;
  
  return {
    username,
    createdAt: users[username].createdAt
  };
};

// 修改密码
export const changePassword = (oldPassword, newPassword) => {
  const username = getCurrentUser();
  if (!username) {
    return { 
      success: false, 
      message: '未登录' 
    };
  }
  
  const users = getUsers();
  if (!users[username]) {
    return { 
      success: false, 
      message: '用户不存在' 
    };
  }
  
  // 验证旧密码
  if (users[username].password !== oldPassword) {
    return { 
      success: false, 
      message: '原密码错误' 
    };
  }
  
  // 更新密码
  users[username].password = newPassword;
  
  if (saveUsers(users)) {
    return { 
      success: true, 
      message: '密码修改成功' 
    };
  } else {
    return { 
      success: false, 
      message: '密码修改失败，无法保存数据' 
    };
  }
}; 